var b=0;
var spr_r='#'
var spr_header='#!#'
var jsfile=false //Загрузка данных из файла data/data.js
var imcom="img/com.png";//комментарий
function get_imgfile(sfl){//определяем иконку файла

if(sfl.indexOf('.')>0){
 var sfm=sfl.split('.')
 if(sfm[sfm.length-1].indexOf('/')>0){
 imgfile='inull';
 }else{
 var efile= jQuery.trim(sfm[sfm.length-1]);//получение расширение файла
 switch(efile){
	 case 'pdf':imgfile='ipdf'
	 break;
	 case'ru':case 'htm':case 'html': case'com': case'php':imgfile='ihtml'
	 break;
	 case 'doc':case'docx':case'txt':imgfile='idoc'
	 break;
	 case 'ppt':case'pptx':case'pps':imgfile='ippt'
	 break;
 	 case 'png':imgfile='ijpg'
	 break;
 	 case 'mp4':case 'avi':case '3gp':imgfile='ivideo'
	 break;
 	 case 'iso':imgfile='iiso'
	 break;
	 
	  default:imgfile='inull';
 }
 //imgfile='i'+efile;
 }
}else{imgfile='inull';}
return imgfile;
}

function set_dir_row(id){// Определение директорий (папок) для записи
	var div_id=$(id).attr('id')
	
	var div_count=tlst.getcountsubdir(div_id)//setcount(div_id,div_ur)
	if(div_count>0){
		rl=new record()
		rl.simgdiro(div_id)
		rl.scountsubdir(div_id,div_count)
	}
}
function set_dir(){// Определение директорий (папок)
$('[u]').each(function (){
tlst.setdirrows(this)

})
}
function get_id(id){// возвращает селектор идентификатора
return '[id="'+id+'"]'
}
function get_txt(t,s){// возвращает текст до сепаратора s
	var di=t.indexOf(s)
	if (di>0){
	tm=t.split(s)
	t=tm[0]
	for(i=1;i<tm.length-1;i++){t+=s+tm[i]}
	//return t.substring(0,di)
	}
	return t;
}




function get_file(){
// Проверяем поддержку File API get_file()
if (window.File && window.FileReader && window.FileList && window.Blob) {
  alert('File API поддерживается данным браузером');
} else {
  alert('File API НЕ поддерживается данным браузером');
}
}

function doclist(){// объект ДОКУМЕНТ

$('<header></header>').appendTo('body')
$('<nav></nav>').appendTo('body')
$('<div id="content"></div>').appendTo('body')
$('<footer>версия 4.1а отчёт</footer>').appendTo('body')

this.header=$('header')
this.menu=$('nav')

this.content='content'
this.futer=$('footer')
this.list=$('#list')

}

function addmenu_p(m,i,c){// добавление пункта в МЕНЮ
$('<button id="'+i+'"></button>').appendTo(m)
$('#'+i).html(c)
return $('#'+i);
}
function create_menu(o){// создание МЕНЮ
o.rollup=addmenu_p(o,'roll_up','Развернуть всё');
$(o.rollup).click(function(){// Открыть все
tlst.roll_up()
})

o.unfold=addmenu_p(o,'unfold','Свернуть всё');
$(o.unfold).click(function(){// Свернуть все
tlst.unfold()
})

}
function record(){//объеект ЗАПИСЬ
this.id=''

this.spr_f='#.#';//Сепаратор полей записи
this.spr_u='.';//сепаратор уровней в идентификаторе
this.spr_c='#:#';// сепаратор комментарий
this.recstr=function(i,s){//вернуть запись в виде строки
return i+this.spr_f+s+tlst.spr_r
}
this.recsavestr=function(id){// возвращает строку для сохранения
	var nelm=$(get_id(id)).find('div.rcontent')
return this.recstr(id,$(nelm).html())
}
this.u=function(u){// определить уровень
if (u.indexOf(this.spr_u)>0){
var um=u.split(this.spr_u)
return parseInt(jQuery.trim(um.length))
}else{
return parseInt(jQuery.trim(1));
}
}
this.ht=function(s){// вернуть html код
var um=s.split(this.spr_f)
var urv=jQuery.trim(this.u(um[0]))
var html='<div id="'+jQuery.trim(um[0])+'" class="u'+urv+' recordtree" u='+urv+'>';
	html+='<img  class="works" name="typer" src="'+tlst.imgnull+'"/>';
	var rcom=um[1].split(this.spr_c);
	 
	html+='<div class="rcontent">'+jQuery.trim(rcom[0])+'</div>'

	html+='<txt class="count works"></txt>'
	if (rcom.length>1){
	html+='<div class="com move"><img src="'+imcom+'" class="icom" title="комментарий"/><div>'+rcom[1]+'</div></div>'
	}	
	
	html+='</div>'
	return html;
}
this.simgdir=function(id){//установить картинку директория
$(get_id(id)).find('[name="typer"]').attr('src',tlst.imgdir)
}
this.simgdiro=function(id){//установить картинку директория открыта
$(get_id(id)).find('[name="typer"]').attr('src',tlst.imgdiro)
}
this.scountsubdir=function(id,c){// установить количество подиректорий
if(c!=0){
$(get_id(id)).find('txt').html('('+c+')')
}else{
$(get_id(id)).find('txt').html('')
}
}

this.relacecontent=function(id,newcontent){// заменяет содержание записи на новое значение
$(get_id(id)).find('div.rcontent').html(newcontent)
}
this.rcontentval=function(id){// возвращает содержание записи
return jQuery.trim($(get_id(id)).find('div.rcontent').html())
}
}
function tree(){//объект ДЕРЕВО
this.currecord=''//Идентификатор текщей записи
this.sourcetype='list'//тип источника 'list'-тег <list> в index.html
this.spr_h='#!#';//сепаратор заголовка
this.spr_r='#;#';//сепаратор записи

this.sourcefile='data/data.js'// файл с данныи: тип источника файл
this.imgdiro='img/idiro.gif'//картинка открытой директории
this.imgdir='img/idir.gif'//картинка закрытой директории
this.imgnull='img/inull.gif'//пустая картинка
this.viewcontent=function(d){// отобразить содержимое
if (d.indexOf(tlst.spr_h)>0){
	var dd=d.split(tlst.spr_h)

	doc.header.html(dd[0])

	var ddd=dd[1].split(tlst.spr_r)
	if(ddd.length>1){
		for (i=0;i<=ddd.length-2;i++){

		if (ddd[i].length>0){
			rl=new record()
			tlst.addrecord(rl.ht(jQuery.trim(ddd[i])),doc.content)
		}
		////
		}

	}else{
	rl=new record()

	tlst.addrecord(rl.ht('1'+rl.spr_f+'Пустая запись'),doc.content)
	}

}else{

	doc.header.html('Пустой заголовок')
	
	rl=new record()
	
	tlst.addrecord(rl.ht('1'+rl.spr_f+'Пустая запись'),doc.content)
}

tlst.set_dir()
//tlst.set_onclick('[u]')
//////////
////
this.unfold()
}
this.load=function(){// загрузить дерево
switch (this.sourcetype){
case 'list':{//загрузка из объекта list
	this.viewcontent($('#list').html())

break;}
case 'file':{// загрузка из файла
	$.get(this.sourcefile,function(data){
	this.viewcontent(data)
	},'text')
break;}
}
}
this.roll_up=function(){//развернуть дерево
	$('[u]').show('slow');
	$('[u] [src="'+tlst.imgdir+'"]').each(function (){
	$(this).attr('src',tlst.imgdiro)
	})
	$('.icom').parent().find('div').show()
}
this.unfold=function(){//свернуть дерево
	$('[u][u!="1"]').hide('slow');// Скрыть все уровни кроме 1
	$('[u] [src="'+tlst.imgdiro+'"]').each(function (){
	$(this).attr('src',tlst.imgdir)
	})
	$('.icom').parent().find('div').hide()
}
this.set_onclick=function(slr){//Назначить раскрытие по селектору
$(slr).on('click',function(e){

//$("#fcs").hide()

var u=parseInt($(this).attr('u'));
var idp=$(this).attr('id');//[u='+(u+1)+']
if ($(this).find('[name="typer"]').attr('src')==tlst.imgdir){
	$(this).find('[name="typer"]').attr('src',tlst.imgdiro)
	$('[id^="'+idp+'."][id!="'+idp+'"][u='+(u+1)+']').show('slow');
}else{
	if($(this).find('[name="typer"]').attr('src')==tlst.imgdiro){
	$(this).find('[name="typer"]').attr('src',tlst.imgdir)
	$('[id^="'+idp+'."][id!="'+idp+'"]').hide('slow').each(function(){
	rs=new record()
	if($(this).find('[name="typer"]').attr('src')==tlst.imgdiro){
	rs.simgdir(this.id)}
	});
	}
};



 //if (b>0){}else{e.stopPropagation()};
e.stopPropagation()
/* $("#fcs").css({height:0, width:0})*/
 }); 
}
this.addrecord=function(h,id){//добавть запись в кнец дерева
$(h).appendTo(get_id(id))
}
this.addafter=function(h,id){//добавить запись после заданной
$(get_id(id)).after(h)
}
this.replace=function(h,id){//заменить запись новой
 $(get_id(id)).replaceWith(h)
} 

this.getcountsubdir=function (id){// определяет количество подпапок
var tr=new record()
return $('[id^="'+id+'."][id!="'+id+'"][u="'+(tr.u(id)+1)+'"]').size()
}

this.setdirrows=function(id){// Определение директорий (папок) для записи
	var div_id=$(id).attr('id')
	
	var div_count=tlst.getcountsubdir(div_id)//setcount(div_id,div_ur)
	if(div_count>0){
		rl=new record()
		rl.simgdiro(div_id)
		rl.scountsubdir(div_id,div_count)
	}
}

this.set_dir=function(){// Определение директорий (папок)
$('[u]').each(function (){
tlst.setdirrows(this)

})
}
this.clear=function(){
$('#'+doc.content).html('')
}
}

$(document).ready(function(){
doc=new doclist()
$('#'+doc.content).hide()
tlst=new tree()
tlst.load()
tlst.unfold()
$('.com').find('div').hide();
$('#'+doc.content).show()
create_menu(doc.menu)
$('a').each(function(){
	$(this).before('<img src="img/'+get_imgfile($(this).attr('href'))+'.gif"/>')
	
})

$("body").delegate('.icom','click',function(e){
	if($(this).parent().find('div').is(":visible")){
		$(this).parent().find('div').hide("slow");
	}else{
		$(this).parent().find('div').show("slow");
	}
	e.stopPropagation();
})
$('<img id="fcs"class="move" src="files/focus.png" style="opacity: 0.4;"/>').appendTo("body")
$("#fcs").hide().css({top:0, left:0})
$(".move").draggable()
$("body").delegate("img","dblclick",function(e){
	$("#fcs").offset({top:$(this).offset().top+e.offsetY, left:e.offsetX}).css({height: 150,width:150}).show();
	e.stopPropagation();
})
$('body').delegate('.works','click',function(e){
	var elm=$(this).parent()
	var u=parseInt(elm.attr('u'));
var idp=elm.attr('id');//[u='+(u+1)+']
if (elm.find('[name="typer"]').attr('src')==tlst.imgdir){
	elm.find('[name="typer"]').attr('src',tlst.imgdiro)
	$('[id^="'+idp+'."][id!="'+idp+'"][u='+(u+1)+']').show('slow');
}else{
	if(elm.find('[name="typer"]').attr('src')==tlst.imgdiro){
	elm.find('[name="typer"]').attr('src',tlst.imgdir)
	$('[id^="'+idp+'."][id!="'+idp+'"]').hide('slow').each(function(){
	rs=new record()
	if(elm.find('[name="typer"]').attr('src')==tlst.imgdiro){
	rs.simgdir(elm.id)}
	});
	}
}
e.stopPropagation();
})

})